HPX – An open source C++ Standard Library for Parallelism and Concurrency
نویسندگان
چکیده
To achieve scalability with today’s heterogeneous HPC resources, we need a dramatic shift in our thinking; MPI+X is not enough. Asynchronous Many Task (AMT) runtime systems break down the global barriers imposed by the Bulk Synchronous Programming model. HPX is an open-source, C++ Standards compliant AMT runtime system that is developed by a diverse international community of collaborators called The Ste| |ar Group. HPX provides features which allow application developers to naturally use key design patterns, such as overlapping communication and computation, decentralizing of control flow, oversubscribing execution resources and sending work to data instead of data to work. The Ste| |ar Group is comprised of physicists, engineers, and computer scientists; men and women from many different institutions and affiliations, and over a dozen different countries. We are committed to advancing the development of scalable parallel applications by providing a platform for collaborating and exchanging ideas. In this paper, we give a detailed description of the features HPX provides and how they help achieve scalability and programmability, a list of applications of HPX including two large NSF funded collaborations (STORM, for storm surge forecasting; and STAR (OctoTiger) an astrophysics project which runs at 96.8% parallel efficiency on 643,280 cores), and we end with a description of how HPX and the Ste| |ar Group fit into the open source community.
منابع مشابه
Fall-12: Using C++11 to teach Concurrency and Parallelism Concepts
In our current undergraduate curriculum, the Operating Systems (OS) course provides in-depth understanding of concepts related to concurrency and parallelism. Typically, the laboratory exercises and programming projects in this course are performed in C-language under Linux, an OS that is unfamiliar to many students. Most of the students primarily have only Java experience under WindowsTM. Cons...
متن کاملA New Library for Parallel Algebraic Computation
We give an overview on Paclib, a library for parallel algebraic computation on shared memory multiprocessors. Paclib is essentially a package of C functions that provide the basic objects and methods of computer algebra in a parallel context. The Paclib programming model supports concurrency, shared memory communication, non-determinism and speculative parallelism. The system is based on a heap...
متن کاملA scalable approach to solving dense linear algebra problems on hybrid CPU-GPU systems
Aiming to fully exploit the computing power of all CPUs and all GPUs on hybrid CPU-GPU systems to solve dense linear algebra problems, we design a class of heterogeneous tile algorithms to maximize the degree of parallelism, to minimize the communication volume, as well as to accommodate the heterogeneity between CPUs and GPUs. The new heterogeneous tile algorithms are executed upon our decentr...
متن کاملlibcppa - Designing an Actor Semantic for C++11
Parallel hardware makes concurrency mandatory for efficient program execution. However, writing concurrent software is both challenging and error-prone. C++11 provides standard facilities for multiprogramming, such as atomic operations with acquire/release semantics and RAII mutex locking, but these primitives remain too low-level. Using them both correctly and efficiently still requires expert...
متن کاملFADAlib: an open source C++ library for fuzzy array dataflow analysis
Ubiquitous multicore architectures require that many levels of parallelism have to be found in codes. Dependence analysis is the main approach in compilers for the detection of parallelism. It enables vectorisation and automatic parallelisation, among many other optimising transformations, and is therefore of crucial importance for optimising compilers. This paper presents new open source softw...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2017